package com.one.service;

import java.time.LocalDate;
import java.util.Map;

/**
 * Create on 2022-01-14
 * <p>
 * Author: LiangWei
 * <p>
 * Description:
 **/
public interface SignService {
    /**
     *@author : LiangWei
     *@date : 2022-01-14 11:48
     *@return :
     *@description : 签到（包含补签）
     */
    boolean doSign(Integer userId,LocalDate date);
    /**
     *@author : LiangWei
     *@date : 2022-01-14 13:57
     *@return :
     *@description : 查询当天是否签到
     */
    boolean checkSign(Integer userId,LocalDate date);
    /**
     *@author : LiangWei
     *@date : 2022-01-14 16:52
     *@return :
     *@description : 获取用户某个月的签到次数
     */
    long getSignCountOneMonth(Integer userId,LocalDate date);
    /**
     *@author : LiangWei
     *@date : 2022-01-14 17:38
     *@return :
     *@description : 获取用户某个月连续签到次数
     */
    long getContinuousSignCount(Integer userId,LocalDate date);
    /**
     *@author : LiangWei
     *@date : 2022-01-15 15:32
     *@return : 
     *@description : 获取当月首次签到日期
     */
    LocalDate getFirstSignDate(Integer userId,LocalDate date);
    /**
     *@author : LiangWei
     *@date : 2022-01-15 15:43
     *@return :
     *@description : 获取当月签到情况
     */
    Map<String,Boolean> getSignInfo(Integer userId,LocalDate date);
    /**
     *@author : LiangWei
     *@date : 2022-01-15 19:52
     *@return :
     *@description : 获取用户当月最多连续签到次数
     */
    long getContinuousSignCountByTotalMonth(Integer userId,LocalDate date);

    /**
     *@author : LiangWei
     *@date : 2022-01-15 19:52
     *@return :
     *@description : 补签（测试）
     */
    String doSignBQ(Integer userId,LocalDate date);
}
